package cn.calin.day05.demo39hashCode;
/*
    哈希值：是一个十进制的整数，由系统随机给出（就是对象的地址值是一个逻辑地址，
    是模拟出来的地址不是数据实际存储的物理地址）
    在Object类中有一个方法，可以获取对象的哈希值
    hashCode方法的源码：
        public native int hashCode();
        native:代表该方法调用的是本地操作系统的方法
 */
public class Demo01Hashcode {
    public static void main(String[] args) {
        //Person类继承了Object类，所以可以使用Object类中的hashCode
        Person p1=new Person();
        int h1=p1.hashCode();
        System.out.println(h1);

        Person p2=new Person();
        int h2=p2.hashCode();
        System.out.println(h2);

        /*
            toString方法的源码：
                return getClass().getName()+"@"+integer.toHaxString(hashCode());

         */
        System.out.println(p1);//cn.calin.day05.demo39hashCode.Person@1
        System.out.println(p2);//cn.calin.day05.demo39hashCode.Person@1
        System.out.println(p1==p2);//false

        /*
            String类的哈希值
                string类重写了Object类hashCode方法
         */
        String s1=new String("abc");
        String s2=new String("abc");

        System.out.println(s1.hashCode());//96354
        System.out.println(s2.hashCode());//96354

        System.out.println("重地："+"通话".hashCode());//1179395
        System.out.println("通话："+"通话".hashCode());//1179395

    }
}
